from goods.models import GoodsChannel
from goods.models import SKU

def get_categories():
    # 1,定义字典
    categories = {}

    # 2,获取频道(一级)
    channels = GoodsChannel.objects.order_by("sequence")
    # 通过商品频道模型里的“sequence”来获取排序了的一个个频道

    # 3,遍历频道
    for channel in channels:
        # 3,1 获取组编号
        group_id = channel.group_id   # 频道获取，当前组号

        # 3,2组装数据
        if group_id not in categories:  # 如果不在定义的空字典里，就加进去
            categories[group_id] = {"channels": [], "sub_cats": []}
            # 并让大字典的值，等于“channels”和“sub_cats”这样的格式，以此组装为想要的数据

        # 3,3 （追加当前频道）添加一级分类到字典中
        category1 = channel.category  # 频道.类别，获得当前频道的类别
        categories[group_id]["channels"].append({ #把数据加到内里的第二个字典‘channels’里
            "id": category1.id,
            "name": category1.name,
            "url": channel.url
        }) # 而‘channels’里的数据就是列表中的字典，字典是键值对的数据形式存在

        # 3,4（构建当前类别的子类别）
        sub_cats = category1.subs.all() # 当前频道的类别.all，获取当前的所有子类别，也就是二级分类,
        for cat2 in sub_cats:
            categories[group_id]["sub_cats"].append(cat2) # 添加到字典中

    # 4,返回分类信息
    return categories

def get_breadcrumb(sku_id):
    sku = SKU.objects.get(id=sku_id)
    return sku.category